package programme;

import manager.Donnees;
import manager.Solution;

/**
 * Cette classe permet de représenter un programme mathématique.
 * 
 * @author BERNARD Arthur, DELAMARCHE Jérôme, PAVAGEAU Max
 */
public abstract class Programme {
	/**
	 * Les données nécessaires au programme.
	 */
	protected Donnees donnees;
	
	
	/**
	 * Constructeur basique.
	 * 
	 * @param donnees Les données du programme.
	 */
	public Programme(Donnees donnees) {
		this.donnees = donnees;
	}
	
	/**
	 * Un getter pour donnees.
	 * @return Les donnees du programme.
	 */
	public Donnees getDonnees() {
		return donnees;
	}

	/**
	 * Fonction qui permet d'évaluer la fonction objectif du programme.
	 * 
	 * @param solution La solution dont on veut calculer la fonction objectif.
	 * @return La valeur de la fonction objectif pour la solution donnée.
	 */
	public abstract double fonctionObjectif(Solution solution);
}
